package com.duyutian.zhanglong.p7客户端和服务端连接;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;

import java.time.LocalDateTime;

/**
 * 自定义处理器
 */
public class MyHttpClientHandler2 extends SimpleChannelInboundHandler<String> {

    @Override
    protected void channelRead0(ChannelHandlerContext ctx, String msg) {
        System.out.println(ctx.channel().remoteAddress() + " msg: " + msg);

        //回写给客户端的信息
        ctx.channel().writeAndFlush("from client :" + LocalDateTime.now());
    }

    /**
     * 发生错误 打印日志
     *
     * @param ctx
     * @param cause
     * @throws Exception
     */
    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        cause.printStackTrace();
        ctx.close();
    }

    /**
     * tcp连接建立之后给服务端发送数据
     * 其实就是往自己的socket的写缓存里面写数据
     * 这个时候服务器的读缓存就会有一样的数据
     * 然后就会触发 channelRead0
     */
    @Override
    public void channelActive(ChannelHandlerContext ctx) throws Exception {

        ctx.channel().writeAndFlush("chu fa le ");
    }

    /**
     * 这里不会触发 这个刚注册上是什么有意思？ 握手还没有完成吗？
     *
     * @param ctx
     * @throws Exception
     */
   /* @Override
    public void channelRegistered(ChannelHandlerContext ctx) throws Exception {
        ctx.channel().writeAndFlush("chu fa le ");
    }*/
}
